# Makefile para compilar o trabalho
# Rode make all ou make debug para gerar as versões de produção e debug,
# respectivamente. Esse makefile considera que o compilador usado será o gcc, o
# sistema operacional é o Linux e o padrão da linguagem é o ISO C99.

# Macro para compilação
CC = gcc -std=c99 -Isrc/include
RELEASE = $(CC) -O3
DEBUG = $(CC) -g3 -Wall

# Dependências dos módulos
CLIENT = src/*.c src/client/*.c
SERVER = src/*.c src/server/*.c

# Compilar em modo de produção
all: release_client release_server

release_client: $(CLIENT)
	$(RELEASE) -pthread $? -o bin/client

release_server: $(SERVER)
	$(RELEASE) $? -o bin/server


# Compilar em modo de depuração
debug: debug_client debug_server
	
debug_client: $(CLIENT)
	$(DEBUG) -pthread $? -o bin/client

debug_server: $(SERVER)
	$(DEBUG) $? -o bin/server


# Limpar arquivos criados
clean:
	rm -rf bin/*
